package com.farmer.order.service;

import com.farmer.common.result.Result;
import com.farmer.order.dto.CreateOrderDTO;

/**
 * 订单服务接口
 */
public interface OrderService {

    /**
     * 创建订单
     * @param createOrderDTO 创建订单DTO
     * @return 创建结果
     */
    Result<?> createOrder(CreateOrderDTO createOrderDTO);

    /**
     * 获取订单详情
     * @param orderId 订单ID
     * @param userId 用户ID（用于权限验证）
     * @return 订单详情
     */
    Result<?> getOrderById(Long orderId, Long userId);

    /**
     * 获取用户订单列表
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @param status 订单状态
     * @return 订单列表
     */
    Result<?> getUserOrderList(Long userId, Integer pageNum, Integer pageSize, String status);

    /**
     * 获取所有订单列表（管理员）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @param status 订单状态
     * @param keyword 搜索关键词
     * @return 订单列表
     */
    Result<?> getAllOrderList(Integer pageNum, Integer pageSize, String status, String keyword);

    /**
     * 更新订单状态
     * @param orderId 订单ID
     * @param status 新状态
     * @return 更新结果
     */
    Result<?> updateOrderStatus(Long orderId, String status);

    /**
     * 取消订单
     * @param orderId 订单ID
     * @param userId 用户ID（用于权限验证）
     * @return 取消结果
     */
    Result<?> cancelOrder(Long orderId, Long userId);

    /**
     * 确认收货
     * @param orderId 订单ID
     * @param userId 用户ID（用于权限验证）
     * @return 确认结果
     */
    Result<?> confirmReceive(Long orderId, Long userId);

    /**
     * 获取订单统计信息
     * @return 统计信息
     */
    Result<?> getOrderStatistics();
} 